在 Day 18 我們分別介紹了 mysql
, mysqli
, PDO
三者的差異,從Day 19開始要比較詳細的介紹每個 function 的用法。
因為 mysql
的語法已經被棄用了,我們就直接從 mysqli
開始吧٩(。・ω・。)و
要到別人家登門歡樂送之前都會先通知對方(嗎?)
要對資料庫進行操作也需要先連線。
$db = new mysqli(資料庫IP, 登入ID, 登入密碼, 資料庫名稱);
像這樣子寫就可以建立一個連線的物件。下面實際來個例子
資料庫IP = '127.0.0.1'
登入ID = 'root'
登入密碼 = ''
資料庫名稱='foo'
$db = new mysqli('127.0.0.1', 'root', '', 'foo');
沒錯,XAMPP 的 root 帳號是沒有密碼的,同時它還擁有至高無上的權限。要更改權限可以在 phpmyadmin 的 privileges 更改。
我們以 Day14 新增資料為例
如果要在下面這樣的資料庫新增一筆新的資料
可以這樣寫
$newUserID = 'User87';
$newUserPassword='123456';
$sql = "INSERT INTO `account` (UserID,password) VALUES (?, PASSWORD(?))";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('ss',$newUserID,$newUserPassword);
$stmt->execute();
這裡的做法是,先把 SQL 中要讓使用者填入的資料,以?
代替。之後再使用 bind_param
將資料依序塞入?
的位置。bind_param
第一個參數是要說明後面接下來的幾個變數要用什麼型態來看它們。像是上面例子是寫ss
就表示後面兩個都當成字串來看。後面在街上相對應數量的變數,最後再使用 $stmt->execute();
執行 SQL 語法即可。
這裡有幾個以前犯過的錯誤在這裡分享
bind_param
裡面要填入的資料要是一個變數不能是資料本身